home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / DayPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  7KB  |  262 lines

  1. /*
  2. **    $Id: DayPanel.c,v 1.4 92/04/21 16:58:36 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/04/21 16:58:36 $
  5. **
  6. **    Editing panel for day of week selection
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_COMMENT=7,GAD_USE,GAD_CANCEL };
  15.  
  16. #define WIDTH    200
  17. #define HEIGHT    159
  18.  
  19. STATIC struct Gadget *
  20. CreateAllGadgets(struct TimeDate *TimeDate,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  21. {
  22.     struct Gadget        *Gadget;
  23.     struct NewGadget     NewGadget;
  24.     UWORD             Counter = 0;
  25.  
  26.     memset(&NewGadget,0,sizeof(struct NewGadget));
  27.  
  28.     if(Gadget = CreateContext(GadgetList))
  29.     {
  30.         NewGadget . ng_LeftEdge        = 48;
  31.         NewGadget . ng_TopEdge         = 27;
  32.         NewGadget . ng_Width        = 26;
  33.         NewGadget . ng_Height        = 11;
  34.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_MONDAY_GAD);
  35.         NewGadget . ng_TextAttr        = &DefaultFont;
  36.         NewGadget . ng_GadgetID        = Counter;
  37.         NewGadget . ng_Flags        = PLACETEXT_RIGHT;
  38.         NewGadget . ng_VisualInfo    = VisualInfo;
  39.  
  40.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  41.             GT_Underscore,    '_',
  42.             GTCB_Checked,    TimeDate -> Day & DAY_MONDAY,
  43.         TAG_DONE);
  44.  
  45.         NewGadget . ng_TopEdge        = 39;
  46.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_TUESDAY_GAD);
  47.         NewGadget . ng_GadgetID        = Counter;
  48.  
  49.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  50.             GT_Underscore,    '_',
  51.             GTCB_Checked,    TimeDate -> Day & DAY_TUESDAY,
  52.         TAG_DONE);
  53.  
  54.         NewGadget . ng_TopEdge        = 51;
  55.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_WEDNESDAY_GAD);
  56.         NewGadget . ng_GadgetID        = Counter;
  57.  
  58.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  59.             GT_Underscore,    '_',
  60.             GTCB_Checked,    TimeDate -> Day & DAY_WEDNESDAY,
  61.         TAG_DONE);
  62.  
  63.         NewGadget . ng_TopEdge        = 63;
  64.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_THURSDAY_GAD);
  65.         NewGadget . ng_GadgetID        = Counter;
  66.  
  67.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  68.             GT_Underscore,    '_',
  69.             GTCB_Checked,    TimeDate -> Day & DAY_THURSDAY,
  70.         TAG_DONE);
  71.  
  72.         NewGadget . ng_TopEdge        = 75;
  73.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_FRIDAY_GAD);
  74.         NewGadget . ng_GadgetID        = Counter;
  75.  
  76.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  77.             GT_Underscore,    '_',
  78.             GTCB_Checked,    TimeDate -> Day & DAY_FRIDAY,
  79.         TAG_DONE);
  80.  
  81.         NewGadget . ng_TopEdge        = 87;
  82.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_SATURDAY_GAD);
  83.         NewGadget . ng_GadgetID        = Counter;
  84.  
  85.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  86.             GT_Underscore,    '_',
  87.             GTCB_Checked,    TimeDate -> Day & DAY_SATURDAY,
  88.         TAG_DONE);
  89.  
  90.         NewGadget . ng_TopEdge        = 99;
  91.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_SUNDAY_GAD);
  92.         NewGadget . ng_GadgetID        = Counter;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  95.             GT_Underscore,    '_',
  96.             GTCB_Checked,    TimeDate -> Day & DAY_SUNDAY,
  97.         TAG_DONE);
  98.  
  99.         NewGadget . ng_LeftEdge        = 10;
  100.         NewGadget . ng_TopEdge        = 125;
  101.         NewGadget . ng_Width        = 181;
  102.         NewGadget . ng_Height        = 14;
  103.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_COMMENT_GAD);
  104.         NewGadget . ng_GadgetID        = Counter;
  105.         NewGadget . ng_Flags        = PLACETEXT_ABOVE|NG_HIGHLABEL;
  106.  
  107.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  108.             GT_Underscore,    '_',
  109.             GTST_String,    TimeDate -> Comment,
  110.             GTST_MaxChars,    19,
  111.             GTST_EditHook,    &CommandHook,
  112.             GA_Immediate,    TRUE,
  113.         TAG_DONE);
  114.  
  115.         NewGadget . ng_LeftEdge        = 11;
  116.         NewGadget . ng_TopEdge        = 143;
  117.         NewGadget . ng_Width        = 88;    /* NEW 52 */
  118.         NewGadget . ng_Height        = 12;
  119.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  120.         NewGadget . ng_GadgetID        = Counter;
  121.         NewGadget . ng_Flags        = PLACETEXT_IN;
  122.  
  123.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  124.             GT_Underscore,    '_',
  125.         TAG_DONE);
  126.  
  127.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  128.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  129.         NewGadget . ng_GadgetID        = Counter;
  130.  
  131.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  132.             GT_Underscore,    '_',
  133.         TAG_DONE);
  134.  
  135.         NewGadget . ng_LeftEdge        = 56;
  136.         NewGadget . ng_TopEdge        = 12;
  137.         NewGadget . ng_GadgetText    = LocaleString(MSG_DAYPANEL_ACTIVE_DAYS_GAD);
  138.         NewGadget . ng_Flags        = PLACETEXT_IN|NG_HIGHLABEL;
  139.         NewGadget . ng_GadgetID        = Counter;
  140.  
  141.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  142.             TAG_DONE);
  143.     }
  144.  
  145.     return(Gadget);
  146. }
  147.  
  148. BYTE
  149. DayPanel(struct TimeDate *TimeDate)
  150. {
  151.     struct Window    *PanelWindow;
  152.     struct Gadget    *GadgetList;
  153.     struct Gadget    *GadgetArray[GAD_CANCEL + 2];
  154.     BYTE         Result = FALSE;
  155.     struct TimeDate     LocalTimeDate;
  156.  
  157.     LocalTimeDate = *TimeDate;
  158.  
  159.     if(CreateAllGadgets(TimeDate,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  160.     {
  161.         if(PanelWindow = OpenWindowTags(NULL,
  162.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  163.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  164.             WA_Width,    WIDTH,
  165.             WA_Height,    HEIGHT,
  166.             WA_Activate,    TRUE,
  167.             WA_DragBar,    TRUE,
  168.             WA_DepthGadget,    TRUE,
  169.             WA_RMBTrap,    TRUE,
  170.             WA_DepthGadget,    TRUE,
  171.             WA_CloseGadget,    TRUE,
  172.             WA_CustomScreen,Screen,
  173.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | STRINGIDCMP | CHECKBOXIDCMP,
  174.             WA_Title,    LocaleString(MSG_DAYPANEL_DAY_SETTINGS_TXT),
  175.         TAG_DONE))
  176.         {
  177.             struct IntuiMessage    *Massage;
  178.             ULONG             Class,Code;
  179.             struct Gadget        *Gadget;
  180.             BYTE             Terminated = FALSE;
  181.             LONG             i;
  182.  
  183.             PushWindow(PanelWindow);
  184.  
  185.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  186.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  187.             GT_RefreshWindow(PanelWindow,NULL);
  188.  
  189.             ActiveGadget = NULL;
  190.  
  191.             while(!Terminated)
  192.             {
  193.                 WaitPort(PanelWindow -> UserPort);
  194.  
  195.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  196.                 {
  197.                     Class    = Massage -> Class;
  198.                     Code    = Massage -> Code;
  199.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  200.  
  201.                     GT_ReplyIMsg(Massage);
  202.  
  203.                     if(Class == IDCMP_VANILLAKEY)
  204.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  205.  
  206.                     if(Class == IDCMP_GADGETDOWN)
  207.                     {
  208.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  209.                             ActiveGadget = Gadget;
  210.                     }
  211.  
  212.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  213.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  214.  
  215.                     if(Class == IDCMP_CLOSEWINDOW)
  216.                         Terminated = TRUE;
  217.  
  218.                     if(Class == IDCMP_GADGETUP)
  219.                     {
  220.                         switch(Gadget -> GadgetID)
  221.                         {
  222.                             case GAD_USE:    strcpy(TimeDate -> Comment,GT_STRING(GadgetArray[GAD_COMMENT]));
  223.  
  224.                                     TimeDate -> Day = 0;
  225.  
  226.                                     for(i = 0 ; i < 7 ; i++)
  227.                                     {
  228.                                         if(GT_CHECKED(GadgetArray[i]))
  229.                                             TimeDate -> Day |= (1 << i);
  230.                                     }
  231.  
  232.                                     Terminated = TRUE;
  233.  
  234.                                     Result = TimeDate -> Day;
  235.  
  236.                                     break;
  237.  
  238.                             case GAD_CANCEL:*TimeDate = LocalTimeDate;
  239.  
  240.                                     Terminated = TRUE;
  241.  
  242.                                     break;
  243.  
  244.                             default:    break;
  245.                         }
  246.                     }
  247.                 }
  248.             }
  249.  
  250.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  251.  
  252.             PopWindow();
  253.  
  254.             CloseWindow(PanelWindow);
  255.         }
  256.  
  257.         FreeGadgets(GadgetList);
  258.     }
  259.  
  260.     return(Result);
  261. }
  262.